package entidades;

import java.io.ByteArrayInputStream;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Parcel;
import android.os.Parcelable;

public class Reserva implements Parcelable{
	private String id,codigo,comercio,hora,tituloProm,horaFin;
	private byte[] imagen;
	private int descuento, difDescuentos, onFacebook, onTwitter;
	public static final int ON_REDSOCIAL_TRUE = 1;
	public static final int ON_REDSOCIAL_FALSE = 0;
	public Reserva(){
		id="";
		codigo="";
	    comercio="";
	    descuento=0;
	    hora="";
	    tituloProm="";
	    imagen = null;
	    difDescuentos = 0;
	    onFacebook = ON_REDSOCIAL_FALSE;
	    onTwitter = ON_REDSOCIAL_FALSE;
	    horaFin="";
	}
	
	
	public String getHoraFin() {
		return horaFin;
	}


	public void setHoraFin(String horaFin) {
		this.horaFin = horaFin;
	}


	public int getDifDescuentos() {
		return difDescuentos;
	}

	public void setDifDescuentos(int difDescuentos) {
		this.difDescuentos = difDescuentos;
	}

	public String getTituloProm() {
		return tituloProm;
	}


	public void setTituloProm(String tituloProm) {
		this.tituloProm = tituloProm;
	}


	public String getHora() {
		return hora;
	}

	public void setHora(String parametroHora) {
		this.hora = parametroHora;
	}

	public int getOnFacebook() {
		return onFacebook;
	}

	public void setOnFacebook(int onFacebook) {
		this.onFacebook = onFacebook;
	}

	public int getOnTwitter() {
		return onTwitter;
	}

	public void setOnTwitter(int onTwitter) {
		this.onTwitter = onTwitter;
	}

	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getCodigo() {
		return codigo;
	}
	public void setCodigo(String codigo) {
		this.codigo = codigo;
	}
	public String getComercio() {
		return comercio;
	}
	public void setComercio(String comercio) {
		this.comercio = comercio;
	}
	public int getDescuento() {
		return descuento;
	}
	public void setDescuento(int descuento) {
		this.descuento = descuento;
	}
	
	   
	@Override
	public int describeContents() {
		return 0;
	}
	@Override
	public void writeToParcel(Parcel outParcel, int flags) {
		outParcel.writeString(id);
		outParcel.writeString(codigo);
		outParcel.writeString(comercio);
		outParcel.writeInt(descuento);
		outParcel.writeInt(difDescuentos);
		outParcel.writeInt(onFacebook);
		outParcel.writeInt(onTwitter);
		outParcel.writeString(hora);
		outParcel.writeString(tituloProm);
		if(imagen!=null){
        	outParcel.writeInt(1);
        	outParcel.writeInt(imagen.length);
            outParcel.writeByteArray(imagen);
        }
        else{
        	outParcel.writeInt(-1);
        }
		
	}
	
	public static final Parcelable.Creator<Reserva> CREATOR = new Parcelable.Creator<Reserva>() {
		public Reserva createFromParcel(Parcel inParcel) {
			return new Reserva(inParcel);
		}
		public Reserva[] newArray(int size) {
			return new Reserva[size];
		}
	};

	/**
	 * Constructor de la clase que arma la clase a partir de un parcel
	 * @param inParcel
	 */
	private Reserva (Parcel inParcel) {
		id = inParcel.readString();
	    codigo = inParcel.readString();
		comercio = inParcel.readString();
        descuento = inParcel.readInt();
        difDescuentos = inParcel.readInt();
        onFacebook = inParcel.readInt();
        onTwitter = inParcel.readInt();
        hora = inParcel.readString();
        tituloProm = inParcel.readString();
        if(inParcel.readInt()>=0){
            imagen=new byte[inParcel.readInt()];
            inParcel.readByteArray(imagen);
        }        
	}
	
	/**
     * Este Metodo devuelve un BitMap, apartir del vector de bytes imagen
     * para poder asignarlo al imageview
     * @return
     */
    public Bitmap getImagenBitmap() {
	    Bitmap imagenBitMap;
	    if(imagen != null){
	        imagenBitMap=BitmapFactory.decodeByteArray(imagen,0,imagen.length);
	        ByteArrayInputStream conversor = new ByteArrayInputStream(imagen);
	        return BitmapFactory.decodeStream(conversor);
	    }
        else{
	        return null;
	    }
    }
    
    public byte[] getImagen()
    {
    	return imagen;
    }
    
    public void setImagen(byte[] parametroImagen) {
	    this.imagen = parametroImagen;
    }
    /**
     * metodo que reescala la imagen NO USAR
     * sirve para salvar las papas, pero el procesamiento de la imagen no deberia ser
     * responsabilidad del movil
     * @return
     */
    public Bitmap resizeBitmap(){
    	return Bitmap.createScaledBitmap(this.getImagenBitmap(), 96, 96, true);
    }

}
